Virtualization is an abstraction that decouples the physical hardware from the operating system in a data processing system to deliver greater resource utilization and flexibility. Virtualization allows multiple virtual machines with heterogeneous operating systems (e.g., Windows™, Linux™, UNIX™, etc.) and applications to run in isolation, side-by-side on the same physical host machine. A virtual machine is the representation of a physical machine by software. A virtual machine has its own set of virtual hardware (e.g., random access memory (RAM), central processing unit (CPU), network interface card (NIC), hard disks, etc.) upon which an operating system and applications are loaded. The operating system sees a consistent, normalized set of hardware regardless of the actual physical hardware components.
A conventional virtualized processing system may include a physical host machine which rims virtualization software such as a hypervisor. The hypervisor software runs on the physical host machine (e.g., a computer) and abstracts physical hardware (e.g., processors, memory, storage and networking resources, etc.) to be provisioned to one or more virtual machines.
A guest operating system (e.g., Windows™, Linux™, UNIX™, etc.) may be installed on each of the virtual machines. The virtualization software presents the physical hardware of the host machine as virtual hardware to the guest operating system and applications running in the guest operating system. A user may access the virtual machine to perform computing tasks as if it were a physical machine. Generally, the virtualization process is completely transparent to the user.
Virtual machines may be backed up on a network storage system attached to the physical host running the virtual machine. For example, a persistent point-in-time image of the virtual machine may be captured and stored in the network storage system. Various forms of network-based storage systems exist today. These forms include network attached storage (NAS), storage area networks (SAN's), and others. Network-based storage systems are commonly used for a variety of purposes, such as providing multiple users with access to shared data, backing up critical data (e.g., by data mirroring), etc. A network-based storage system typically includes at least one storage server, which is a processing system configured to store and retrieve data on behalf of one or more client processing systems (client devices). In the context of NAS, a storage server may be a file server, which operates on behalf of one or more clients to store and manage shared files. The files may be stored in a storage system that includes one or more arrays of mass storage devices, such as magnetic or optical disks or tapes, by using a data storage scheme such as Redundant Array of Inexpensive Disks (RAID). In a SAN context, a storage server provides clients with block-level access to stored data, rather than file-level access. Some storage servers are capable of providing clients with both file-level access and block-level access. In the event of a disaster, the backup snapshot of the virtual machine stored on the storage system may be lost. The disaster may cause the loss of data and/or functionality on the host machine, on the storage system, or on both. Such a disaster would prevent recovery of data and preclude restoration of the virtual machine because the backup data stored in the storage system may no longer be accessible.